using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
using System.Runtime.CompilerServices;

namespace SideShow.Driver.ComInterop
{
    
    [Guid("76EFD608-E0CE-4887-98E2-F931363C4BC5")]
    [ComImport]
    [ClassInterface(ClassInterfaceType.None)]
    [TypeLibType(2)]
    [ComVisible(false)]
    class SideShowClassExtension : ISideShowClassExtension
    {
        #region ISideShowClassExtension Members

        [PreserveSig, MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
        public virtual extern void Initialize(IntPtr pWdfDeviceUnknown, IntPtr pSideShowDriverUnknown);
        [PreserveSig, MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
        public virtual extern void Uninitialize(object pWdfDeviceUnknown);
        [PreserveSig, MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
        public virtual extern void OnProcessIoControl(SideShow.Driver.ComInterop.IWDFIoQueue pWdfQueue, SideShow.Driver.ComInterop.IWDFIoRequest pWdfRequest, uint ControlCode, uint InputBufferSizeInBytes, uint OutputBufferSizeInBytes, out uint pcbWritten);

        #endregion
    }
}
